<?php

	/**
	 * CURL请求类
	 */
	
	header('Content-type:text/html;charset=utf8');//单文件测试阶段使用 防止乱码(正式使用屏蔽)

	Class CURL_request 
	{

		//curl句柄
		private $ch;

		//返回处理结果
		private $results;

		//调试模式
		private $debug;

		/**
		 * 初始化curl
		 */
		public function __construct($debug=false)
		{

			//获取PHP已加载模块
			$loaded_module = get_loaded_extensions();

			//判断curl扩展是否已被开启
			in_array('curl', $loaded_module) || die('Error: 请检查PHP配置文件是否已开启curl扩展模块');

			//初始化
			$this->debug = $debug;

			$this->ch = curl_init();


		}

		/**
		 * get请求
		 */
		private function curl_get($url)
		{

			//设置get请求地址
			curl_setopt($this->ch, CURLOPT_URL, $url);

			//设置返回结果
			curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1); 

			//获取返回结果
			$this->results = curl_exec($this->ch);


		}


		/**
		 * post 请求
		 */
		private function curl_post($url, $data)
		{

			//设置get请求地址
			curl_setopt($this->ch, CURLOPT_URL, $url);

			//设置返回结果
			curl_setopt($this->ch, CURLOPT_RETURNTRANSFER, 1);

			//开启post请求
			curl_setopt($this->ch, CURLOPT_POST, 1);

			//请求post数据
			curl_setopt($this->ch, CURLOPT_POSTFIELDS, $data);

			//获取返回结果
			$this->results = curl_exec($this->ch);

		}

		/**
		 * 外部调用请求方法
		 */
		public function request($url, $data=false)
		{
			//匹配url正则
			$reg = '/^(http|https|ftp|file){1}/';

			//url校验
			if ( preg_match($reg, $url) == NULL )
			{

				//调试信息
				$this->debug && print_r('Error: url格式错误');

				return false;

			}

			//请求参数校验
			if ( !is_array($data) && !empty($data) )
			{

				//调试信息
				$this->debug && print_r('Error: 请求参数不是一个数组');

				return false;


			}

			//post
			if ( !empty($data) )
			{

				$this->curl_post($url, $data);

			}
			else//get
			{

				$this->curl_get($url);

			}


			return $this->results;

		}


	}

	


?>